读《Java核心技术》 您所在的位置:网站首页 package import作用 读《Java核心技术》

读《Java核心技术》

#读《Java核心技术》| 来源: 网络整理| 查看: 265

静态导入

import 语句不仅可以导人类,还增加了导人静态方法和静态域的功能。

import static java.lang.System.*;

就可以使用 System 类的静态方法和静态域,而不必加类名前缀:

out.println(“Goodbye, World!”); // i.e., System.out 静态域

exit(0); //i.e., System.exit 静态方法

还可以导入特定的方法或域: import static java.lang.System.out; (这是导入域吧?)

将类放入包中

package com.david.core java ; public class Employee{ ... }

没有package语句,默认default package (没有名字的包)

编译器对.java文件进行操作,解释器加载类

import static java.lang.System.*; public class PackageTest{ public static void main(String[] args){ Employee harry = new Employee("Harry Hacker",50000,1989,10,1); harry.raseSalary(5); out.println("name=" + harry.getName() + ",salary = " + harry.getSalary()); } } package com.david.corejava; import java.time.*; public class Employee{ private String name; private double salary; private LocalDate hireDay; public Employee(String name, double salary, int year, int month, int day){ this.name = name; this.salary = salary; hireDay = LocalDate.of(year,month,day); } public String getName(){ return name; } public double getSalary(){ return salary; } public LocalDate getHireDay(){ return hireDay; } public void raiseSalary(double byPercent){ double raise = salary * byPercent / 100; salary += raise; } }

包作用域

如果没有指定 public 或 private , 这 个部分(类、方法或变量)可以被同一个包中的所有方法访问,对于类来说,这种默认是合乎情理的。但是, 对于变量来说就有些不适宜了, 因此变量必须显式地标记为 private, 不然的话将默认为包可见。显然, 这样做会破坏封装性。

包密封 ( package sealing) :果将一个包密封起来, 就 不能再向这个包添加类了。

类 路 径 (class path)

类存储在文件系统的子目录中。类的路径必须与包名匹配。类路径是所有包含类文件的路径的集合。

为了使类能够被多个程序共享,需要做到下面几点:

1 ) 把类放到一个目录中, 例如 /home/user/classdir(基目录)。需要注意, 这个目录是包树状结构 的基目录。如果希望将 com.horstmann.corejava.Employee 类添加到其中,这个 Employee.class 类文件就必须位于子目录 /home/user/classdir/com/horstmann/corejava 中。

2 ) 将 JAR 文件放在一个目录中,例如:/home/user/archives。

3 ) 设置类路径(classpath)。

类路径,例子:c:\classdir;.;c:\archives\archive.jar

为什么要有基目录,因为一个源文件内可能import多个包,所以在查找的时候要将基目录拼接上import的包所对应的的层次结构目录,这样才能定位到具体的类文件。

为什么要有.当前目录,因为这样才能找到同一个包下不同的类文件。

为什么要有jar包文件目录,因为你的源文件中引入了这些jar包中的类。

编译器定位文件要比虚拟机复杂得多。如果引用了一个类,而没有指出这个类所在的 包, 那么编译器将首先查找包含这个类的包,并询查所有的 import 指令,确定其中是否包含 了被引用的类。例如, 假定源文件包含指令:

import java.util.*;

import com.horstmann.corejava.*;

并且源代码引用了 Employee 类。 编译器将试图查找 java.lang.Employee (因为java.lang 包被 默认导入)、java.util.Employee、 com.horstmann.corejava.Employee 和当前包中的 Employee。

对这个类路径的所有位置中所列出的每一个类进行逐一查看。如果找到了一个以上的类, 就 会产生编译错误(因为类必须是唯一的,而 import 语句的次序却无关紧要–>因为总是会遍历所有包)。

设置类路径

java -classpath /home/user/dassdir: .:/home/user/archives/archive.jar HyProg

文档注释(略)

类的设计技巧

1.保证数据私有

2.对数据初始化

3.不要在类内使用过多的基本类型, 用其他类代替多个相关的基本类型使用

例如, 用一个称为 Address 的新的类替换一个 Customer 类中以下的实例域:

private String street; private String city; private String state; private int zip;

4.并非所有域都需要访问器和修改该区,对象中常常包括不希望设置的域

5.将职责过多的类进行分解

6.类名和方法名要体现他们的职责

7.优先使用不可变类(什么是不可变类? —就是没有方法可以改变对象的状态,也就是说对象调用一个方法,它会返回一个新的对象,而不是直接修改当前的对象)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有